#include <iostream>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    long long k;          // 操作次数可能很大，用 long long
    cin >> n >> k;

    vector<long long> a(n);
    long long sum = 0;    // 最终答案用 long long 存

    priority_queue<long long> pq;  // 最大堆（Max-Heap）

    for (int i = 0; i < n; ++i) {
        cin >> a[i];
        sum += a[i];
        if (a[i] % 2 == 0) {  // 只把偶数丢到堆里
            pq.push(a[i]);
        }
    }

    // 最多做 k 次，但当没有偶数可操作时就提前结束
    while (k > 0 && !pq.empty()) {
        long long x = pq.top();
        pq.pop();

        long long dec = x / 2;  // 本次减少的量
        sum -= dec;
        x /= 2;

        if (x % 2 == 0 && x > 0) { // 仍然是偶数，后面还可以继续操作
            pq.push(x);
        }

        --k;
    }

    cout << sum << '\n';
    return 0;
}